package com.lark.algorithm.study.recursion;

import com.lark.algorithm.everyday.others.D9Qo22;

/**
 * @author btmood
 * @version 1.0
 * @apiNote
 * @since 2024-03-14 13:44
 */
public class Solution3 {

    public class ListNode {
        int val;
        ListNode next;
        ListNode(int x) { val = x; }
    }

    // 在链表中删除值为val的节点
    public ListNode removeElements(ListNode head, int val, int depth) {
        System.out.println(generateDepthString(depth));
        // 最基本的情况：头节点为null
        // 对于一个空链表，删除值为val的情况，返回值还是空
        if (head == null) {
            return head;
        }
        // 拆分 并 解决原问题
        head.next = removeElements(head.next, val, depth + 1);
        // 判断头节点的值是否等于val
        return head.val == val ? head.next : head;
    }

    private String generateDepthString(int depth) {
        StringBuilder res = new StringBuilder();
        for (int i = 0; i < depth; i++) {
            res.append("--");
        }
        return res.toString();
    }


}
